Skip to content

chore(perps-controller): bump @nktkas/hyperliquid to ^0.33.3 - #10591

Merged
abretonc7s merged 6 commits into
mainfrom
chore/perps-bump-hyperliquid-sdk-0.33.3
Sep 30, 2026
Merged

abretonc7s merged 6 commits into
mainfrom
chore/perps-bump-hyperliquid-sdk-0.33.3

Conversation

@abretonc7s

@abretonc7s abretonc7s commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Explanation

Bumps @nktkas/hyperliquid from ^0.33.1 to ^0.33.3 in @metamask/perps-controller (v0.33.2, v0.33.3).

  • Yarn patch dropped. The patch (fix(perps-controller): repair CommonJS build and add close leverage + order latency #9471) stripped /// <amd-module name="file:///home/runner/..."> directives from the SDK's .d.ts files. 0.33.3 no longer ships them, so the patch and its root resolutions entry are gone. The built dist has no file:/// references.
  • dexAbstraction migration removed. 0.33.2 dropped dexAbstraction from userAbstraction / userSetAbstraction to match the API: HyperLiquid retired the mode (the live userAbstraction endpoint now returns "default" for the SDK's former dexAbstraction fixture users). The userSetAbstraction main-wallet migration and its "don't re-prompt after a rejection" cache were dead, so they are removed. default / disabled accounts still migrate through agentSetAbstraction, and deferral with allowUserSigning: false is unchanged. An unexpected dexAbstraction response now takes the existing unknown-mode bail.
  • New order types. FrontendOrder.orderType adds Twap Slice, Vault Close and Spot Dust Conversion. They are mapped explicitly to 'market' in historical orders, which is what the fallback already returned.
  • Type-only breaks: OrderFill.liquidation.liquidatedUser is now optional (HyperLiquid omits it on some liquidation fills), and the re-exported FrontendOrder.orderType union gains the three values above. Mobile (PerpsFillTag) and Extension (perps-fill-tag) already guard liquidatedUser at runtime; their local transactionHistory types declare it as string and may need ? when adopting this release.
  • Historical order statuses. Every OrderProcessingStatus from the SDK now maps explicitly (exhaustive satisfies map): the specific *Rejected statuses report rejected and outcomeSettledCanceled / internalCancel report canceled, where they previously fell through to queued.
  • Unified-account migration lock. Waiters re-check the in-flight lock after each wait (same pattern as the referral lock), so an attempt that ends without caching a result (e.g. deferred at init for a hardware wallet) no longer lets every waiter run agentSetAbstraction concurrently.

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

- Drop the SDK yarn patch; 0.33.3 no longer ships amd-module directives
- Remove the retired dexAbstraction migration (userSetAbstraction path)
- Map new HyperLiquid order types and make liquidatedUser optional
@abretonc7s
abretonc7s requested review from a team as code owners September 30, 2026 01:31
@abretonc7s
abretonc7s deployed to default-branch September 30, 2026 01:31 — with GitHub Actions Active
@socket-security

socket-security Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​nktkas/​hyperliquid@​0.33.1 ⏵ 0.33.3100 +110010095 +1100

View full report

@abretonc7s

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-previews

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@11.0.0-preview-2848be6
@metamask-previews/accounts-controller@40.0.0-preview-2848be6
@metamask-previews/address-book-controller@8.0.0-preview-2848be6
@metamask-previews/advanced-chart-core@1.0.0-preview-2848be6
@metamask-previews/ai-controllers@2.0.0-preview-2848be6
@metamask-previews/analytics-controller@3.2.0-preview-2848be6
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-2848be6
@metamask-previews/announcement-controller@9.0.0-preview-2848be6
@metamask-previews/app-metadata-controller@3.0.0-preview-2848be6
@metamask-previews/approval-controller@10.0.0-preview-2848be6
@metamask-previews/assets-controller@17.0.0-preview-2848be6
@metamask-previews/assets-controllers@112.0.4-preview-2848be6
@metamask-previews/authenticated-user-storage@4.1.0-preview-2848be6
@metamask-previews/base-controller@10.0.0-preview-2848be6
@metamask-previews/base-data-service@2.1.0-preview-2848be6
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-2848be6
@metamask-previews/bridge-controller@81.4.0-preview-2848be6
@metamask-previews/bridge-status-controller@76.3.3-preview-2848be6
@metamask-previews/build-utils@4.0.0-preview-2848be6
@metamask-previews/chain-agnostic-permission@2.0.0-preview-2848be6
@metamask-previews/chomp-api-service@6.0.0-preview-2848be6
@metamask-previews/claims-controller@1.0.2-preview-2848be6
@metamask-previews/client-controller@2.0.0-preview-2848be6
@metamask-previews/client-utils@3.0.3-preview-2848be6
@metamask-previews/compliance-controller@3.0.0-preview-2848be6
@metamask-previews/composable-controller@13.0.0-preview-2848be6
@metamask-previews/config-registry-controller@4.0.0-preview-2848be6
@metamask-previews/connectivity-controller@1.0.0-preview-2848be6
@metamask-previews/controller-utils@13.0.0-preview-2848be6
@metamask-previews/core-backend@11.0.0-preview-2848be6
@metamask-previews/cryptography@0.0.0-preview-2848be6
@metamask-previews/delegation-controller@4.0.0-preview-2848be6
@metamask-previews/earn-controller@13.0.2-preview-2848be6
@metamask-previews/eip-5792-middleware@4.0.1-preview-2848be6
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-2848be6
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-2848be6
@metamask-previews/eth-block-tracker@16.0.0-preview-2848be6
@metamask-previews/eth-json-rpc-middleware@25.0.0-preview-2848be6
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-2848be6
@metamask-previews/foundryup@2.0.0-preview-2848be6
@metamask-previews/gas-fee-controller@27.0.0-preview-2848be6
@metamask-previews/gator-permissions-controller@6.0.1-preview-2848be6
@metamask-previews/geolocation-controller@2.0.0-preview-2848be6
@metamask-previews/java-tron-up@2.0.0-preview-2848be6
@metamask-previews/json-rpc-engine@11.0.0-preview-2848be6
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-2848be6
@metamask-previews/keyring-controller@28.1.0-preview-2848be6
@metamask-previews/kyc-controller@0.6.0-preview-2848be6
@metamask-previews/local-node-utils@2.0.0-preview-2848be6
@metamask-previews/logging-controller@10.0.0-preview-2848be6
@metamask-previews/message-manager@15.0.0-preview-2848be6
@metamask-previews/messenger@3.0.0-preview-2848be6
@metamask-previews/messenger-cli@1.0.0-preview-2848be6
@metamask-previews/money-account-api-data-service@2.1.0-preview-2848be6
@metamask-previews/money-account-balance-service@3.1.1-preview-2848be6
@metamask-previews/money-account-controller@2.0.0-preview-2848be6
@metamask-previews/money-account-upgrade-controller@5.1.0-preview-2848be6
@metamask-previews/money-account-utils@2.1.0-preview-2848be6
@metamask-previews/multichain-account-service@14.1.0-preview-2848be6
@metamask-previews/multichain-api-middleware@5.0.0-preview-2848be6
@metamask-previews/multichain-network-controller@4.0.0-preview-2848be6
@metamask-previews/multichain-transactions-controller@8.0.0-preview-2848be6
@metamask-previews/name-controller@10.0.0-preview-2848be6
@metamask-previews/network-connection-banner-controller@1.0.0-preview-2848be6
@metamask-previews/network-controller@37.0.0-preview-2848be6
@metamask-previews/network-enablement-controller@7.0.1-preview-2848be6
@metamask-previews/notification-services-controller@29.0.2-preview-2848be6
@metamask-previews/passkey-controller@4.1.0-preview-2848be6
@metamask-previews/permission-controller@14.0.0-preview-2848be6
@metamask-previews/permission-log-controller@6.0.0-preview-2848be6
@metamask-previews/perps-controller@18.0.1-preview-2848be6
@metamask-previews/phishing-controller@18.1.1-preview-2848be6
@metamask-previews/platform-api-docs@0.2.1-preview-2848be6
@metamask-previews/polling-controller@17.0.0-preview-2848be6
@metamask-previews/preferences-controller@24.0.0-preview-2848be6
@metamask-previews/profile-controller@0.0.0-preview-2848be6
@metamask-previews/profile-metrics-controller@5.1.2-preview-2848be6
@metamask-previews/profile-sync-controller@33.0.0-preview-2848be6
@metamask-previews/ramps-controller@26.1.0-preview-2848be6
@metamask-previews/rate-limit-controller@8.0.0-preview-2848be6
@metamask-previews/react-data-query@2.0.0-preview-2848be6
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-2848be6
@metamask-previews/sample-controllers@6.0.0-preview-2848be6
@metamask-previews/seedless-onboarding-controller@11.0.1-preview-2848be6
@metamask-previews/selected-network-controller@27.0.0-preview-2848be6
@metamask-previews/sentinel-api-service@2.0.0-preview-2848be6
@metamask-previews/shield-controller@7.0.3-preview-2848be6
@metamask-previews/signature-controller@40.0.0-preview-2848be6
@metamask-previews/smart-transactions-controller@27.0.3-preview-2848be6
@metamask-previews/snap-account-service@4.0.0-preview-2848be6
@metamask-previews/social-controllers@3.4.0-preview-2848be6
@metamask-previews/solana-test-validator-up@2.0.0-preview-2848be6
@metamask-previews/stellar-quickstart-up@0.0.0-preview-2848be6
@metamask-previews/storage-service@2.0.0-preview-2848be6
@metamask-previews/subscription-controller@11.0.0-preview-2848be6
@metamask-previews/transaction-controller@72.0.1-preview-2848be6
@metamask-previews/transaction-pay-controller@30.0.0-preview-2848be6
@metamask-previews/user-operation-controller@42.0.1-preview-2848be6
@metamask-previews/utils@12.0.0-preview-2848be6
@metamask-previews/wallet@15.1.0-preview-2848be6
@metamask-previews/wallet-cli@0.0.0-preview-2848be6

@abretonc7s
abretonc7s added this pull request to the merge queue Sep 30, 2026
Merged via the queue into main with commit beca30c Sep 30, 2026
344 checks passed
@abretonc7s
abretonc7s deleted the chore/perps-bump-hyperliquid-sdk-0.33.3 branch September 30, 2026 04:40
@abretonc7s abretonc7s mentioned this pull request Sep 30, 2026
3 of 4 tasks
github-merge-queue Bot pushed a commit that referenced this pull request Sep 30, 2026
## Explanation

- Release major perps-controller 19.0.0

Breaking changes (see changelog):
- `OrderFill.liquidation.liquidatedUser` is now optional
- `FrontendOrder.orderType` union adds `Twap Slice`, `Vault Close`,
`Spot Dust Conversion`
- Removed `LighterPersonalSigner` and the `personalSigner` / `l1Address`
fields of `LighterAuthConfig`

## References

- #10414, #10437, #10464, #10559, #10588, #10589, #10591

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them
tirthraj01 pushed a commit to tirthraj01/metamask-mobile that referenced this pull request Oct 2, 2026
…K 0.33.3) (MetaMask#37025)

<!--
Please submit this PR as a draft initially.

Do not mark it as "Ready for review" until this PR meets the canonical
Definition of Ready For Review in `docs/readme/ready-for-review.md`.

In short: the template must be materially complete (not just section
titles
present), all status checks must be currently passing, and the only
expected
follow-up commits must be reviewer-driven.
-->
<!--
mms-check directive vocabulary — read by
.github/scripts/shared/pr-template-checks.ts
at module load to build the validation plan. Directives are invisible in
rendered
markdown and must NOT be removed or edited without updating the
validator registry.

  type=text           Section must contain non-placeholder prose.
  type=changelog      Section must have a valid CHANGELOG entry: line.
type=issue-link Section must have a Fixes:/Closes:/Refs: line with a
value.
type=manual-testing Section must have real testing steps or an explicit
N/A.
type=screenshot Section must have evidence (image/URL) or an explicit
N/A.
type=checklist Section must have all checkboxes consciously checked.
required=true|false Whether a missing/invalid section runs the validator
at all.
blocking=true|false Whether a failure of this check fails the CI
workflow.
Default: false — failures are shown as warnings in the sticky
                      comment but do not block the PR.

Sections without a directive are checked for structural presence only.
-->

## **Description**

Adopts `@metamask/perps-controller` 19.0.0 and `@nktkas/hyperliquid`
^0.33.3.

19.0.0 (core Release 1303.0.0) carries HyperLiquid SDK 0.33.3
(MetaMask/core#10591: retired `dexAbstraction` migration removed, every
HyperLiquid order status mapped explicitly, unified-account migration
lock fix) plus MetaMask#10464, MetaMask#10414, MetaMask#10559, MetaMask#10588 and MetaMask#10589.

Mobile adaptations for the breaking changes:
- `liquidation.liquidatedUser` is optional in the local
`transactionHistory` type, matching the controller (HyperLiquid omits it
on some liquidation fills). `PerpsFillTag` already guarded it at
runtime; two tests cover fills without it.
- The perps integration-test harness mocks `HyperLiquidWalletService`
with the method names MetaMask#10559 renamed (`isMainAccountSignerReady`,
`requiresSignatureConfirmation`); without it 7 integration tests fail
against 19.0.0.

This supersedes MetaMask#36966, which backports MetaMask#10559 onto 18.0.1 through a
Yarn patch.

The release was first validated on device through the preview build
`18.0.1-preview-2848be6`, then re-validated on 19.0.0 itself (evidence
below).

<!-- mms-check: type=text required=true -->

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

## **Changelog**

<!-- mms-check: type=changelog required=true blocking=true -->

<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`

If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`

(This helps the Release Engineer do their job more quickly and
accurately)
-->

CHANGELOG entry: null

## **Related issues**

<!-- mms-check: type=issue-link required=true -->

Fixes: https://consensyssoftware.atlassian.net/browse/TAT-4044
Refs: MetaMask/core#10591, MetaMask#36966

## **Manual testing steps**

<!-- recipe-evidence summary: keep reviewer-facing checks concise; full
paths stay in pr-package/evidence.md. -->
Recipe evidence: `pass`
- Full evidence package: `pr-package/evidence.md`
- Quality report: `pr-package/recipe-quality.json`
- Recipe run: `pr-package/runs/artifacts-recipe-run/`

<!-- mms-check: type=manual-testing required=true -->

```gherkin
Feature: Perps on perps-controller 19.0.0

  Scenario: trade, manage TP/SL and read history on HyperLiquid testnet
    Given a funded HyperLiquid testnet account on Unified Account
    When the user opens BTC, places a market long, sets TP/SL, edits the TP, rests and cancels a limit order, and closes the position
    Then prices load live, TP/SL and the edit reach the venue, and Activity > Perps > Orders shows Filled/Canceled with no Queued rows

  Scenario: withdraw readiness
    Given the same account
    When the user opens Withdraw and enters $5
    Then the unified available balance, fee, time and amount received are shown and Withdraw is enabled
```

Validated on the iOS simulator with an automated recipe on 19.0.0 (98/98
nodes pass); see screenshots below.

## **Screenshots/Recordings**

<table>
<tr><td colspan="2"><strong>Recipe visual
evidence</strong><br/>Screenshots are grouped for quick reviewer
comparison.</td></tr>
<tr>
<td align="center" width="50%"><strong>AC1: BTC detail with live price
and change</strong><br/><img
src="https://raw.githubusercontent.com/abretonc7s/mm-mobile-artifacts/main/evidence/TAT-4044-chore-perps-controller-next-preview-0210/01-ui-screenshot-screenshot.png"
alt="ui.screenshot screenshot" width="400" /></td>
<td align="center" width="50%"><strong>AC3: position with TP/SL set
(toast + auto-close)</strong><br/><img
src="https://raw.githubusercontent.com/abretonc7s/mm-mobile-artifacts/main/evidence/TAT-4044-chore-perps-controller-next-preview-0210/02-ui-screenshot-screenshot.png"
alt="ui.screenshot screenshot" width="400" /></td>
</tr>
<tr>
<td align="center" width="50%"><strong>AC4: Perps order history,
Filled/Canceled, no Queued</strong><br/><img
src="https://raw.githubusercontent.com/abretonc7s/mm-mobile-artifacts/main/evidence/TAT-4044-chore-perps-controller-next-preview-0210/03-ui-screenshot-screenshot.png"
alt="ui.screenshot screenshot" width="400" /></td>
<td align="center" width="50%"><strong>AC5: withdraw ready with unified
balance and fees</strong><br/><img
src="https://raw.githubusercontent.com/abretonc7s/mm-mobile-artifacts/main/evidence/TAT-4044-chore-perps-controller-next-preview-0210/04-ui-screenshot-screenshot.png"
alt="ui.screenshot screenshot" width="400" /></td>
</tr>
</table>

### **Before**

N/A: dependency upgrade with no intended UI change; the same screens on
`main` use 18.0.1.

### **After**

Recipe evidence below (iOS simulator, HyperLiquid testnet,
perps-controller 19.0.0, 98/98 nodes).

### **Recipe evidence**

<!-- Generated from .github/pull-request-template.md. Drag/drop each
local image file at its marker so GitHub uploads and renders it. -->

<table>
<tr><td colspan="2"><strong>Recipe visual evidence</strong><br/>Use
concise captions; edit into a clearer before/after table when that helps
review.</td></tr>
<tr>
<td align="center" width="50%"><strong>AC1: BTC detail with live price
and change</strong><br/><!-- IMAGE_SLOT_01: drag/drop
pr-package/images/01-ui-screenshot-screenshot.png here.
--><br/><code>pr-package/images/01-ui-screenshot-screenshot.png</code></td>
<td align="center" width="50%"><strong>AC3: position with TP/SL set
(toast + auto-close)</strong><br/><!-- IMAGE_SLOT_02: drag/drop
pr-package/images/02-ui-screenshot-screenshot.png here.
--><br/><code>pr-package/images/02-ui-screenshot-screenshot.png</code></td>
</tr>
<tr>
<td align="center" width="50%"><strong>AC4: Perps order history,
Filled/Canceled, no Queued</strong><br/><!-- IMAGE_SLOT_03: drag/drop
pr-package/images/03-ui-screenshot-screenshot.png here.
--><br/><code>pr-package/images/03-ui-screenshot-screenshot.png</code></td>
<td align="center" width="50%"><strong>AC5: withdraw ready with unified
balance and fees</strong><br/><!-- IMAGE_SLOT_04: drag/drop
pr-package/images/04-ui-screenshot-screenshot.png here.
--><br/><code>pr-package/images/04-ui-screenshot-screenshot.png</code></td>
</tr>
</table>


## **Recipe artifact package**

Task path:
`/Users/deeeed/dev/metamask/metamask-mobile-4/temp/tasks/recipe-cook/20260930T021012Z-perps-controller-next-preview`
PR package:
`/Users/deeeed/dev/metamask/metamask-mobile-4/temp/tasks/recipe-cook/20260930T021012Z-perps-controller-next-preview/pr-package`
- Full evidence: `pr-package/evidence.md`
- Quality report: `pr-package/recipe-quality.json`
- Image files: `pr-package/images/`
- Checklist: `pr-package/checklist.md`
- Recipe run: `pr-package/runs/artifacts-recipe-run/`

## **Pre-merge author checklist**

<!-- mms-check: type=checklist required=true -->

<!--
Every checklist item must be consciously assessed before marking this PR
as
"Ready for review". A checked box means you deliberately considered that
responsibility, not that you literally performed every action listed.

Unchecked boxes are ambiguous: they are not an implicit "N/A" and they
are not
a silent "skip". See `docs/readme/ready-for-review.md` for the full
checklist
semantics.
-->

- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I've included tests if applicable
- [ ] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

#### Performance checks (if applicable)

- [ ] I've tested on Android
  - Ideally on a mid-range device; emulator is acceptable
- [ ] I've tested with a power user scenario
- Use these [power-user
SRPs](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/edit-v2/401401446401?draftShareId=9d77e1e1-4bdc-4be1-9ebb-ccd916988d93)
to import wallets with many accounts and tokens
- [ ] I've instrumented key operations with Sentry traces for production
performance metrics
- See [`trace()`](/app/util/trace.ts) for usage and
[`addToken`](/app/components/Views/AddAsset/components/AddCustomToken/AddCustomToken.tsx#L274)
for an example

For performance guidelines and tooling, see the [Performance
Guide](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/400085549067/Performance+Guide+for+Engineers).

## **Pre-merge reviewer checklist**

<!--
Reviewer checklist items follow the same semantics as the author
checklist: an
unchecked box is ambiguous, a checked box means the reviewer consciously
assessed that responsibility. See `docs/readme/ready-for-review.md`.
-->

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants